let pub_timer = null

// 组件引入包
function loadView(file) {
  return process.env.NODE_ENV === 'development'
    ? require('@/views' + file).default
    : () => import('@/views' + file)
}
// 全局唯一定时器
function setTimer(success, delayTime) {
  if (pub_timer !== null) {
    clearTimeout(pub_timer)
  }
  pub_timer = setTimeout(() => {
    success()
    clearTimeout(pub_timer)
    pub_timer = null
  }, delayTime)
}
const baseUtils = {
  // 清空字符
  trim: function(str) {
    return str.replace(/^(\s|\u00A0)+/, '').replace(/(\s|\u00A0)+$/, '')
  },
  countDown: function(time, success) {
    const timeA = function() {
      time--
      success(time + 's后重试')
      if (time === 0) return success('重新发送')
      setTimeout(timeA, 1000)
    }
    timeA()
  }
}

const fromUtils = {
  // 校验名字
  checkName: function(value) {
    // 为空或者只输入空格时
    const spaceReg = /^\s+$/
    // 只能填写汉字、字母、数字
    // 输入非数字、英文、汉字时，提示“请输入正确的收货人姓名”，姓名可以输入空格
    const formatReg = /^[\u4E00-\u9FFF|0-9\-|a-z|A-Z|\s]+$/
    // 最多30个字符
    const lenReg = /^[A-Za-z0-9\u4e00-\u9fa5]([A-Za-z0-9\u4e00-\u9fa5]|\s){29,}[A-Za-z0-9\u4e00-\u9fa5]$/
    if (spaceReg.test(value)) {
      return '请输入收货人姓名'
    } else if (!formatReg.test(value)) {
      return '请输入正确的收货人姓名'
    } else if (lenReg.test(value)) {
      return '收货人姓名最多30个字符'
    }
    return false
  },
  // 校验密码
  checkPass: function(value) {
    if (value === '') {
      return '请输入密码'
    }
    var pwdRegex = new RegExp('(?=.*[0-9])(?=.*[a-zA-Z]).{6,30}')
    if (!pwdRegex.test(value)) {
      return '至少六位数字带字母的密码'
    }
    return false
  },
  // 校验手机号
  checkIphone: function(value) {
    const iphoneReg = /^1(3|4|5|6|7|8|9)\d{9}$/
    if (!iphoneReg.test(value) && value.length !== 11) {
      return '请输入正确的手机号码'
    }
    return false
  },
  // 校验验证码
  checkCode: function(value) {
    if (value.length !== 6) {
      return '请输入正确的验证码'
    }
    return false
  },
  // 校验地址
  checkDetail: function(value) {
    // 为空或者只输入空格时
    const spaceReg = /^\s+$/
    if (value === '' || spaceReg.test(value)) {
      return '请填写详细信息'
    } else if (
      !/^[\u4E00-\u9FFF|0-9\-|a-z|A-Z|\s|#\{\}\(\)\[\],\.。，（）｛｝【】\|]+$/.test(
        value
      )
    ) {
      return '输入格式不正确(不能输入特殊字符)'
    } else if (value.length > 80) {
      return '最多输入80个字符'
    }
  },
  // 校验Email
  checkEmail: function(value) {
    var myreg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/
    if (myreg.test(value)) {
      return false
    }
    return '请输入正确的邮箱'
  },
  // 校验身份证号
  checkIDCard: function(value) {
    const spaceReg = /^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X])$/
    if (value === '') {
      return '请填写身份证号'
    } else if (!spaceReg.test(value)) {
      return '输入身份证号格式不正确'
    } else {
      return false
    }
  }
}

const timeUtils = {
  // 时间戳转化为时间格式
  formatTime: function(timestamp, formatType) {
    function formatNumber(n) {
      n = n.toString()
      return n[1] ? n : '0' + n
    }
    const date = new Date(timestamp)
    const year = date.getFullYear()
    const month = date.getMonth() + 1
    const day = date.getDate()
    const hour = date.getHours()
    const minute = date.getMinutes()
    const second = date.getSeconds()
    let str = ''
    if (formatType === 'hh:mm:ss') {
      str = [hour, minute, second].map(formatNumber).join(':')
    } else {
      str =
        [year, month, day].map(formatNumber).join('-') +
        ' ' +
        [hour, minute, second].map(formatNumber).join(':')
    }
    return str
  }
}
export default {}
export { loadView, setTimer, baseUtils, fromUtils, timeUtils }
